package Negocio;

import java.util.ArrayList;

import javax.persistence.DiscriminatorValue;
import javax.persistence.Entity;
import DTO.EnvioUrgenteVO;
import SRV.EncomiendaSRV;
import SRV.ProveedorSRV;

@Entity
@DiscriminatorValue("envioUrgente")
public class EnvioUrgente extends EnvioExterno
{

	public EnvioUrgente(String posicionActual, boolean habilitado, int idTracking, Carrier empresaEncargada) 
	{
		super(posicionActual, habilitado, idTracking, empresaEncargada);
	}
	
	public EnvioUrgente()
	{
		super();
	}
	
	public EnvioUrgente toBusiness(EnvioUrgenteVO envioVO)
	{
	    Encomienda encomienda = new Encomienda();
	    EncomiendaSRV daoEnc = new EncomiendaSRV();
	    
	    Carrier carrier = new Carrier();
	    ProveedorSRV daoPro = new ProveedorSRV();
	    
	    carrier = (Carrier) daoPro.getProveedor(envioVO.getEmpresaEncargada());
	    
	    EnvioUrgente envio = new EnvioUrgente(envioVO.getPosicionActual(), envioVO.isHabilitado(), envioVO.getIdTracking(),
		    carrier);
	    
	    for (int idEncomienda : envioVO.getEncomiendas()){
			encomienda = daoEnc.getEncomienda(idEncomienda);
			envio.agregarEncomienda(encomienda);
	    }
	    return envio;
	}
	
	public float calcularPrecio(String pais)
	{
		return this.getEmpresaEncargada().getCosto(pais);
	}
	
	public EnvioUrgenteVO toVO(){
	    ArrayList<Integer> encomiendasVO = new ArrayList<Integer>();
	    for (Encomienda encomienda : getEncomiendas())
	    	encomiendasVO.add(encomienda.getIdEncomienda());
	    
	    EnvioUrgenteVO aux = new EnvioUrgenteVO(getIdEnvio(),getPosicionActual(),isHabilitado(),encomiendasVO, getIdTracking(),getEmpresaEncargada().getCuit());
	    return aux;
	}

	@Override
	public boolean sosEnvioUrgente() {
		return true;
	}

	@Override
	public boolean sosEnvioInternacional() {
		return false;
	}

	@Override
	public boolean sosEnvioInterno() {
		return false;
	}


}
